package com.adcc.ags.gms.user.service;

import com.adcc.ags.gms.user.entity.Route;
import com.adcc.ags.gms.user.vo.GWUserTreeVO;
import com.adcc.ags.gms.user.vo.GWUserVO;
import com.adcc.ags.gms.user.vo.RouteVO;
import com.github.pagehelper.PageInfo;
import com.google.common.base.Optional;

import java.util.List;

/**
 * 路由服务层
 */
public interface RouteService {

    /**
     * 初始化网关用户树
     * @return
     */
    public Optional<GWUserTreeVO> initGWUserTree();

    /**
     * 初始化网关用户列表
     * @return
     */
    public Optional<List<GWUserVO>> initGWUserList(long userId);

    /**
     * 根据网关用户id 查询路由
     * @param userId
     * @param currentPage
     * @param pageSize
     * @return
     */
    public Optional<PageInfo<Route>> findRouteByUserId(long userId, int currentPage, int pageSize);

    /**
     * 通过网关用户ID获取用户名称
     * @param ids
     * @return
     */
    public List<String> findUserNameById(String[] ids);

    /**
     * 根据查询条件查询路由
     * @param name
     * @param type
     * @param userId
     * @param currentPage
     * @param pageSize
     * @return
     */
    public Optional<PageInfo<Route>> findRouteByNameAndType(String name,int type,long userId,int currentPage, int pageSize);

    /**
     * 用户路由新增
     * @param vo
     * @return
     */
    public Optional<Boolean> createRoute(RouteVO vo);

    /**
     * 用户路由修改
     * @param vo
     * @return
     */

    public Optional<Boolean> updateRoute(RouteVO vo);

    /***
     * 用户路由删除
     * @param ids
     * @return
     */
    public Optional<Boolean> deleteSelectedRoute(String[] ids);

    /**
     * 验证用户名是否存在
     * @param name
     * @return
     */
    public Optional<Boolean> isExistRouteName(String name);
}
